Ext.ns("liang.mgr");

liang.mgr.UserPanel = Ext.extend(Ext.grid.GridPanel, {
			submitWindow : null,
			constructor : function(cfg) {
				cfg = cfg || {};
				Ext.apply(this, cfg);
				//引用DynamicImport.js文件并加载所用的CSS 
				importCSS("/res/css/ext/RowEditor.css");
				//importJs("/res/ext-plugins/RowEditor.js");
				//var gridEditor = instanceJsObj("/res/ext-plugins/RowEditor.js");
				var userEditor = new Ext.ux.grid.RowEditor({
					saveText:'保存',
					cancelText:'取消',
					algin:'center'
				});
				liang.mgr.UserPanel.superclass.constructor.call(this, {
							closeAction : 'hide',
							layout : "fit",
							autoScroll : true,
							plugins : [userEditor],
							// autoLoad : {
							// url : _href,
							// scripts : true //使用页面中的javaScript起作用
							// },
							// 是否有关闭按钮
							closable : true,
							errorText : '字段不空',
							tbar : [{
										scope : this,
										text : '新增帐号',
										handler : this.addUser
									}, '-', {
										scope : this,
										text : '修改帐号',
										handler : this.updateUser
									}, '-', '->', '过滤器:',
									new Ext.form.ComboBox({
												width : 50
											}), '过滤值：',
									new Ext.form.TextField({
												width : 100
											}), '-', {
										text : '过滤'
									}],
							view : new Ext.grid.GroupingView({
										markDirty : false
									}),
							bbar : new Ext.PagingToolbar({
										buttonAlign : 'center',
										nextText : '下一页',
										prevText : '前一页',
										refreshText : '刷新数据',
										firstText : '第一页',
										lastText : '最后一页',
										pageSize : 20,
										store : this.store,
										displayInfo : true,
										displayMsg : '显示第 {0} 条到 {1} 条记录，一共 {2} 条',
										emptyMsg : '没有记录'
									})
						});

			},
			initComponent : function() {
				// 建立一个数据记录的对象
				var user = new Ext.data.Record.create([{
							name : 'id',
							type : 'number'
						}, {
							name : 'name',
							type : 'string'
						}, {
							name : 'password',
							type : 'string'
						}]);
				// //声明一个writer,来将信息写入到后台
				var userWriter = new Ext.data.JsonWriter({
					encode : true,
					writeAllFields : false
						// 写入所有字段，而不仅仅是那些发生变化的字段
					});
				// 声明一个数据存储仓库,使用json的方式获取远程数据
				var _store = new Ext.data.GroupingStore({
							autoSave : false,// 设置不自动保存
							writer : userWriter,
							autoLoad : true,
							reader : new Ext.data.JsonReader({
										id : 'id',
										totalProperty : 'totalProperty',
										root : 'users'
									}, [{
												name : 'id',
												type : 'int'
											}, {
												name : 'name',
												type : 'string'
											}, {
												name : 'password',
												type : 'string'
											}]),
							proxy : new Ext.data.HttpProxy({
										url : this.url,
										method : "post"
									}),
							sortInfo : {
								field : 'name',
								direction : 'DESC'
							}
						});
				this.store = _store;
				this.columns = [new Ext.grid.RowNumberer(), {
							header : '编号',
							dataIndex : 'id'
						}, {
							header : "帐号",
							dataIndex : "name",
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : false,
								blankText : '帐号不为空',
								emptyText : '输入帐号'
							}
						}, {
							header : "密码",
							dataIndex : "password",
							sortable : true,
							editor : {
								xtype : 'textfield',
								allowBlank : false,
								blankText : '密码不为空',
								emptyText : '输入密码'
							}
						}];
				liang.mgr.UserPanel.superclass.initComponent.call(this);
			},
			getUserFormPanel : function() {
				var _fieldSet = new Ext.form.FieldSet({
							title : '用户信息',
							defaultType : 'textfield',
							anchor : "99%",
							items : [{
										xtype : 'hidden',
										name : 'dataModel.user.id'
									}, {
										xtype : 'textfield',
										name : 'dataModel.user.name',
										allowBlank : false,
										blankText : '帐号不为空',
										fieldLabel : '帐号',
										emptyText : '输入帐号',
										anchor : "100%"
									}, {
										xtype : 'textfield',
										inputType : 'password',
										name : 'dataModel.user.password',
										allowBlank : false,
										blankText : '密码不为空',
										fieldLabel : '密码',
										anchor : "100%"
									}]
						});
				var _fromPanel = new Ext.form.FormPanel({
							// frame : true,
							style : 'padding: 10px',
							labelWidth : 50,
							labelAlign : "left",
							buttonAlign : 'center',
							layout : "form",
							baseCls : 'x-plain',
							items : _fieldSet
						});
				return _fromPanel;
			},
			initSubmitWindow : function() {
				this.submitWindow = new liang.mgr.SubmitWindow({
							scope : this,
							parentCt : this,
							width : 300,
							height : 200,
							newFormPanel : this.getUserFormPanel(),
							success : this.success
						});
			},
			addUser : function() {
				if (!this.submitWindow) {
					this.initSubmitWindow();
				}
				this.submitWindow.setUrl(getFullUrl("mgr/userAction!save.action"));
				this.setTitle('新增用户');
				this.submitWindow.doLayout(true);
				this.submitWindow.show();
			},
			updateUser : function() {
				if (!this.submitWindow) {
					this.initSubmitWindow();
				}
				this.submitWindow.setUrl(getFullUrl("mgr/userAction!update.action"));
				this.submitWindow.doLayout(true);
				this.submitWindow.show();
			},
			deleteUser : function() {
			},
			success : function(form, action) {
				// 获得要操作的Panal

				var submitWindow = action.options.scope;

				console.dir(action.options);

				// 动态新增数据
				var _gridStore = submitWindow.parentCt.getStore();
				var _record = action.result.result;
				console.info(_record);
				_gridStore.add({
							id : _record.id,
							name : _record.name,
							password : _record.password
						});

				submitWindow.parentCt.doLayout();
				form.reset();
				submitWindow.hide();
			}
		});
